{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 手撕grpo\n",
    "\n",
    "截图素材：https://zhuanlan.zhihu.com/p/24816372882 https://zhuanlan.zhihu.com/p/657693775\n",
    "\n",
    "这个notebook的reward由规则给出，比如format，以及accury\n",
    "\n",
    "只有actor模型，ref模型，没有critic模型\n",
    "\n",
    "同时reward是基于规则给出的，所以没有rēward模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "定义参数配置"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "vocab_size = 50257\n",
    "hidden_size = 128\n",
    "intermediate_size = 256\n",
    "num_hidden_layers = 2\n",
    "num_attention_heads = 4\n",
    "batch_size = 2\n",
    "length_x = 5\n",
    "max_new_tokens = 5\n",
    "grpo_samples_nums = 2 # GRPO 采样数量，有的框架会把一张卡分给vllm，来让vllm加速生成"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "初始化ref 和actor模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "from transformers import GPT2Config, GPT2LMHeadModel\n",
    "\n",
    "torch.manual_seed(1)\n",
    "\n",
    "# 定义参数\n",
    "vocab_size = 10\n",
    "hidden_size = 128\n",
    "intermediate_size = 256\n",
    "num_hidden_layers = 2\n",
    "num_attention_heads = 4\n",
    "\n",
    "# 加载模型配置\n",
    "config = GPT2Config(\n",
    "    vocab_size=vocab_size,\n",
    "    n_embd=hidden_size,\n",
    "    n_inner=intermediate_size,\n",
    "    n_layer=num_hidden_layers,\n",
    "    n_head=num_attention_heads\n",
    ")\n",
    "\n",
    "# 初始化 GPT - 2 模型\n",
    "model = GPT2LMHeadModel(config)\n",
    "model_ref = GPT2LMHeadModel(config)\n",
    "model.config.pad_token_id = model.config.eos_token_id\n",
    "model_ref.config.pad_token_id = model_ref.config.eos_token_id"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "定义奖励函数\n",
    "\n",
    "参考https://huggingface.co/docs/trl/main/en/grpo_trainer#looking-deeper-into-the-grpo-method"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def reward_func_len(completions, **kwargs):\n",
    "    \"\"\"Reward function that gives higher scores to longer completions.\"\"\"\n",
    "    return [float(len(completion)) for completion in completions]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[6.0, 12.0]\n"
     ]
    }
   ],
   "source": [
    "prompts = [\"The sky is\", \"The sun is\"]\n",
    "completions = [\" blue.\", \" in the sky.\"]\n",
    "print(reward_func_len(prompts=prompts, completions=completions))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1.0, 0.0]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import re\n",
    "\n",
    "def format_reward_func(completions, **kwargs):\n",
    "    \"\"\"Reward function that checks if the completion has a specific format.\"\"\"\n",
    "    pattern = r\"^<think>.*?</think><answer>.*?</answer>$\"\n",
    "    completion_contents = [completion[0][\"content\"] for completion in completions]\n",
    "    matches = [re.match(pattern, content) for content in completion_contents]\n",
    "    return [1.0 if match else 0.0 for match in matches]\n",
    "\n",
    "prompts = [\n",
    "    [{\"role\": \"assistant\", \"content\": \"What is the result of (1 + 2) * 4?\"}],\n",
    "    [{\"role\": \"assistant\", \"content\": \"What is the result of (3 + 1) * 2?\"}],\n",
    "]\n",
    "completions = [\n",
    "    [{\"role\": \"assistant\", \"content\": \"<think>The sum of 1 and 2 is 3, which we multiply by 4 to get 12.</think><answer>(1 + 2) * 4 = 12</answer>\"}],\n",
    "    [{\"role\": \"assistant\", \"content\": \"The sum of 3 and 1 is 4, which we multiply by 2 to get 8. So (3 + 1) * 2 = 8.\"}],\n",
    "]\n",
    "format_reward_func(prompts=prompts, completions=completions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1.0, 0.0]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import re\n",
    "\n",
    "def reward_func(completions, ground_truth, **kwargs):\n",
    "    # Regular expression to capture content inside \\boxed{}\n",
    "    matches = [re.search(r\"\\\\boxed\\{(.*?)\\}\", completion) for completion in completions]\n",
    "    contents = [match.group(1) if match else \"\" for match in matches]\n",
    "    # Reward 1 if the content is the same as the ground truth, 0 otherwise\n",
    "    return [1.0 if c == gt else 0.0 for c, gt in zip(contents, ground_truth)]\n",
    "\n",
    "prompts = [\"Problem: Solve the equation $2x + 3 = 7$. Solution:\", \"Problem: Solve the equation $3x - 5 = 10$.\"]\n",
    "completions = [r\" The solution is \\boxed{2}.\", r\" The solution is \\boxed{6}.\"]\n",
    "ground_truth = [\"2\", \"5\"]\n",
    "reward_func(prompts=prompts, completions=completions, ground_truth=ground_truth)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以下是使用 GRPOTrainer 中多个奖励函数的示例。在这个例子中，我们定义了两个特定任务的奖励函数： math_reward_func 和 coding_reward_func 。 math_reward_func 奖励基于正确性的数学问题，而 coding_reward_func 奖励基于解决方案是否工作的编程问题。\n",
    "\n",
    "不过check_math_solution 以及 test_code_solution要自己写"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2025-03-31 22:07:42,665] [INFO] [real_accelerator.py:203:get_accelerator] Setting ds_accelerator to mps (auto detect)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "W0331 22:07:42.977000 8626851648 torch/distributed/elastic/multiprocessing/redirects.py:28] NOTE: Redirects are currently not supported in Windows or MacOs.\n"
     ]
    }
   ],
   "source": [
    "from datasets import Dataset\n",
    "from trl import GRPOTrainer\n",
    "\n",
    "# Define a dataset that contains both math and coding problems\n",
    "dataset = Dataset.from_list(\n",
    "    [\n",
    "        {\"prompt\": \"What is 2+2?\", \"task\": \"math\"},\n",
    "        {\"prompt\": \"Write a function that returns the sum of two numbers.\", \"task\": \"code\"},\n",
    "        {\"prompt\": \"What is 3*4?\", \"task\": \"math\"},\n",
    "        {\"prompt\": \"Write a function that returns the product of two numbers.\", \"task\": \"code\"},\n",
    "    ]\n",
    ")\n",
    "\n",
    "# Math-specific reward function\n",
    "def math_reward_func(prompts, completions, task, **kwargs):\n",
    "    rewards = []\n",
    "    for prompt, completion, t in zip(prompts, completions, task):\n",
    "        if t == \"math\":\n",
    "            # Calculate math-specific reward\n",
    "            correct = check_math_solution(prompt, completion)\n",
    "            reward = 1.0 if correct else -1.0\n",
    "            rewards.append(reward)\n",
    "        else:\n",
    "            # Return None for non-math tasks\n",
    "            rewards.append(None)\n",
    "    return rewards\n",
    "\n",
    "# Coding-specific reward function\n",
    "def coding_reward_func(prompts, completions, task, **kwargs):\n",
    "    rewards = []\n",
    "    for prompt, completion, t in zip(prompts, completions, task):\n",
    "        if t == \"coding\":\n",
    "            # Calculate coding-specific reward\n",
    "            works = test_code_solution(prompt, completion)\n",
    "            reward = 1.0 if works else -1.0\n",
    "            rewards.append(reward)\n",
    "        else:\n",
    "            # Return None for non-coding tasks\n",
    "            rewards.append(None)\n",
    "    return rewards\n",
    "\n",
    "# # Use both task-specific reward functions\n",
    "# trainer = GRPOTrainer(\n",
    "#     model=\"Qwen/Qwen2-0.5B-Instruct\",\n",
    "#     reward_funcs=[math_reward_func, coding_reward_func],\n",
    "#     train_dataset=dataset,\n",
    "# )\n",
    "\n",
    "# trainer.train()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## grpo把critic model使用基于规定的优势函数计算来替换掉了\n",
    "\n",
    "可以看到我们需要先准备一批oi才能计算出优势函数"
   ]
  },
  {
   "attachments": {
    "GRPO.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![GRPO.png](attachment:GRPO.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "一般情况下，比如trl是可以通过vllm来生成一批数据，我们复制一波输入然后model generate一批就行，在此刻就随便搞一波就行，"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_response(model, prompt, max_new_tokens):\n",
    "    inputs = {'input_ids': prompt}  # ignore mask，好像不需要mask\n",
    "    y = model.generate(**inputs,\n",
    "                       max_new_tokens=max_new_tokens,\n",
    "                       # forced_eos_token_id=True\n",
    "                       )\n",
    "    return y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这个notebook真实数据不好写（带think以及answer标签），就写个大概"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "input_x = [{\"prompt\": \"What is 2+2?\", \"task\": \"math\"},\n",
    "        {\"prompt\": \"Write a function that returns the sum of two numbers.\", \"task\": \"code\"},\n",
    "        {\"prompt\": \"What is 3*4?\", \"task\": \"math\"},\n",
    "        {\"prompt\": \"Write a function that returns the product of two numbers.\", \"task\": \"code\"}]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "调用一个get_response，生成一批output_x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 假设模型生成的response\n",
    "output_x = [\"<think>The sum of 1 and 2 is 3, which we multiply by 4 to get 12.</think><answer>(1 + 2) * 4 = 12</answer>\",\n",
    "            \"The sum of 3 and 1 is 4, which we multiply by 2 to get 8. So (3 + 1) * 2 = 8.\",\n",
    "            \"<think>The product of 3 and 4 is 12.</think><answer>3 * 4 = 12</answer>\",\n",
    "            \"The product of 3 and 4 is 12. So 3 * 4 = 12.\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们现在有一组数据后就要得到reward"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "len_rewards = reward_func_len(completions=output_x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "def reward_func_format(completions, **kwargs):\n",
    "    \"\"\"Reward function that checks if the completion has a specific format.\"\"\"\n",
    "    pattern = r\"^<think>.*?</think><answer>.*?</answer>$\"\n",
    "    completion_contents = [completion for completion in completions]\n",
    "    matches = [re.match(pattern, content) for content in completion_contents]\n",
    "    return [1.0 if match else 0.0 for match in matches]\n",
    "format_rewards = reward_func_format(completions=output_x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对每组奖励进行计算优势函数\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\\hat{A}_{i,t} = \\frac{r_i - \\text{mean}(\\mathbf{r})}{\\text{std}(\\mathbf{r})}$$ "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([ 1.2379,  0.0982, -0.1375, -1.1986])\n",
      "tensor([ 0.8513, -0.8513,  0.8513, -0.8513])\n"
     ]
    }
   ],
   "source": [
    "def grpo_advantage(rewards):\n",
    "    epsilon = 0.01\n",
    "    rewards = torch.tensor(rewards) \n",
    "    A = (rewards - rewards.mean()) / (rewards.std() + epsilon)\n",
    "    return A\n",
    "\n",
    "advantage_len = grpo_advantage(len_rewards)\n",
    "print(advantage_len)\n",
    "advantage_format = grpo_advantage(format_rewards)\n",
    "print(advantage_format)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "剩下的流程其实与ppo相同，不太想写了"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\\mathbb{D}_{\\text{KL}}\\left[\\pi_\\theta \\|\\pi_{\\text{ref}}\\right] = \\frac{\\pi_{\\text{ref}}(o_{i,t} \\mid q, o_{i,<t})}{\\pi_\\theta(o_{i,t} \\mid q, o_{i,<t})} - \\log \\frac{\\pi_{\\text{ref}}(o_{i,t} \\mid q, o_{i,<t})}{\\pi_\\theta(o_{i,t} \\mid q, o_{i,<t})} - 1,\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "prompt = torch.randint(0, vocab_size, (batch_size, length_x))\n",
    "response = torch.randint(0, vocab_size, (batch_size, length_x + max_new_tokens))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[0., 0., 0., 0., 0., 1., 1., 1., 1., 1.],\n",
      "        [0., 0., 0., 0., 0., 1., 1., 1., 1., 1.]])\n"
     ]
    }
   ],
   "source": [
    "attention_mask = torch.ones(batch_size, length_x+max_new_tokens)\n",
    "attention_mask[:, :length_x] = 0\n",
    "print(attention_mask)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch.nn.functional as F\n",
    "\n",
    "def get_logits(model, input_ids):\n",
    "    # 得到logits\n",
    "    outputs = model(input_ids=input_ids)\n",
    "    logits = outputs.logits\n",
    "    return logits\n",
    "\n",
    "def get_logprobs(model, response, attention_mask):\n",
    "    # 得到logprobs\n",
    "    logits = get_logits(model, response)\n",
    "    # F.log_softmax() 是先进行softmax运算然后再取对数（log）\n",
    "    all_token_logprobs = F.log_softmax(logits, dim=-1)\n",
    "    # 使用torch.gather() 从logprobs中收集response的值\n",
    "    gathered = torch.gather(all_token_logprobs, 2, response.unsqueeze(2))\n",
    "    # 去掉最后一个维度\n",
    "    response_logprobs = gathered.squeeze(-1)\n",
    "    return response_logprobs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[-1.6183, -1.3673, -1.5195, -1.5547, -1.4089, -1.3429, -1.2517, -1.3878,\n",
       "         -1.3432, -1.1901],\n",
       "        [-1.8480, -1.5877, -1.3003, -1.3325, -1.6356, -1.7515, -1.4456, -1.4905,\n",
       "         -1.2200, -1.4700]], grad_fn=<SqueezeBackward1>)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "get_logprobs(model, response, attention_mask)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[2.6098e-02, 4.7684e-05, 4.6487e-03, 1.6298e-03, 3.6643e-03, 6.2504e-03,\n",
       "         2.8181e-04, 2.8575e-02, 2.9539e-02, 3.2508e-02],\n",
       "        [1.3051e-02, 1.5891e-04, 4.1568e-02, 7.6652e-05, 1.7810e-04, 1.0834e-01,\n",
       "         4.0960e-04, 4.0464e-02, 2.9019e-02, 7.3563e-02]],\n",
       "       grad_fn=<SubBackward0>)"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def grpo_kl(pi, pi_ref):\n",
    "    x1 = pi_ref.exp() / pi.exp()\n",
    "    x2 = pi_ref - pi\n",
    "    return x1 - x2 - 1\n",
    "\n",
    "pi = get_logprobs(model, response, attention_mask)\n",
    "pi_ref = get_logprobs(model_ref, response, attention_mask)\n",
    "grpo_kl(pi, pi_ref)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "loss\n",
    "\n",
    "$$\n",
    "\\mathcal{L}_{\\text{GRPO}}(\\theta) = - \\frac{1}{G} \\sum_{i=1}^G \\frac{1}{|o_i|} \\sum_{t=1}^{|o_i|} \\left[ \\min \\left( \\frac{\\pi_\\theta(o_{i,t} \\mid q, o_{i,< t})}{\\pi_{\\theta_{\\text{old}}}(o_{i,t} \\mid q, o_{i,< t})} \\hat{A}_{i,t}, \\, \\text{clip}\\left( \\frac{\\pi_\\theta(o_{i,t} \\mid q, o_{i,< t})}{\\pi_{\\theta_{\\text{old}}}(o_{i,t} \\mid q, o_{i,< t})}, 1 - \\epsilon, 1 + \\epsilon \\right) \\hat{A}_{i,t} \\right) - \\beta \\mathbb{D}_{\\text{KL}}\\left[\\pi_\\theta \\| \\pi_{\\text{ref}}\\right] \\right],\n",
    "$$"
   ]
  },
  {
   "attachments": {
    "GRPO-loss.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![GRPO-loss.png](attachment:GRPO-loss.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "超参数\n",
    "\n",
    "epslion = 0.01\n",
    "\n",
    "beta = 0.1\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "group_num, len_oi = pi.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "len_oi = len_oi - length_x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len_oi"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([5, 5])"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len_oi = torch.tensor([len_oi] * group_num, dtype = torch.long)\n",
    "len_oi\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0., 0., 0., 0., 0., 1., 1., 1., 1., 1.],\n",
       "        [0., 0., 0., 0., 0., 1., 1., 1., 1., 1.]])"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "attention_mask"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "epslion = 0.01\n",
    "beta = 0.01"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/var/folders/_k/crvl81qd02z3lyvty3mgfwxw0000gn/T/ipykernel_52429/710462030.py:2: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  test_rewards = torch.tensor(len_rewards,dtype = torch.float)\n",
      "/var/folders/_k/crvl81qd02z3lyvty3mgfwxw0000gn/T/ipykernel_52429/1779594425.py:3: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  rewards = torch.tensor(rewards)\n"
     ]
    }
   ],
   "source": [
    "test_rewards = [100,66]\n",
    "test_rewards = torch.tensor(len_rewards,dtype = torch.float)\n",
    "advantage_test = grpo_advantage(test_rewards)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "advantage_test = advantage_test.unsqueeze(dim = 1) \n",
    "\n",
    "ratio = pi.exp() / pi_ref.exp()\n",
    "ratio_clip = torch.clamp(ratio, 1 - epslion, 1 + epslion)\n",
    "\n",
    "policy_gradient = torch.minimum(ratio * advantage_test , ratio_clip * advantage_test)\n",
    "kl = grpo_kl(pi, pi_ref)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0.9900, 1.0098, 0.9900, 1.0100, 0.9900, 1.0100, 0.9900, 0.9900, 0.9900,\n",
       "         1.0100],\n",
       "        [0.9900, 0.9900, 1.0100, 0.9900, 1.0100, 0.9900, 1.0100, 0.9900, 1.0100,\n",
       "         0.9900]], grad_fn=<ClampBackward1>)"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ratio_clip"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[ 0.5672,  0.7138,  0.6428,  0.7139,  0.6496,  0.7139,  0.6903,  0.5616,\n",
       "          0.5596,  0.7139],\n",
       "        [-0.6997, -0.6997, -0.9569, -0.6997, -0.7203, -0.6997, -0.7274, -0.6997,\n",
       "         -0.9085, -0.6997]], grad_fn=<MinimumBackward0>)"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "policy_gradient"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[2.6098e-02, 4.7684e-05, 4.6487e-03, 1.6298e-03, 3.6643e-03, 6.2504e-03,\n",
       "         2.8181e-04, 2.8575e-02, 2.9539e-02, 3.2508e-02],\n",
       "        [1.3051e-02, 1.5891e-04, 4.1568e-02, 7.6652e-05, 1.7810e-04, 1.0834e-01,\n",
       "         4.0960e-04, 4.0464e-02, 2.9019e-02, 7.3563e-02]],\n",
       "       grad_fn=<SubBackward0>)"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[ 0.0000,  0.0000,  0.0000,  0.0000,  0.0000,  0.7138,  0.6903,  0.5614,\n",
       "          0.5593,  0.7136],\n",
       "        [-0.0000, -0.0000, -0.0000, -0.0000, -0.0000, -0.7008, -0.7274, -0.7001,\n",
       "         -0.9087, -0.7005]], grad_fn=<MulBackward0>)"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "loss = (policy_gradient -  beta * kl) * attention_mask\n",
    "loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[5],\n",
       "        [5]])"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len_oi.unsqueeze(dim = 1)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [],
   "source": [
    "def grpo_loss(pi, pi_old, pi_ref, advantage, length_x, mask):\n",
    "    epslion = 0.01\n",
    "    beta = 0.01\n",
    "\n",
    "    advantage = advantage.unsqueeze(dim = 1) \n",
    "\n",
    "    ratio = pi.exp() / pi_old.exp()\n",
    "    ratio_clip = torch.clamp(ratio, 1 - epslion, 1 + epslion)\n",
    "\n",
    "    policy_gradient = torch.minimum(ratio * advantage , ratio_clip * advantage)\n",
    "    kl = grpo_kl(pi, pi_ref)\n",
    "\n",
    "    group_num, len_oi = pi.shape  \n",
    "    \n",
    "    len_oi = len_oi - length_x\n",
    "    len_oi = torch.tensor([len_oi] * group_num, dtype = torch.long)\n",
    "\n",
    "    loss = (policy_gradient -  beta * kl) * mask\n",
    "    loss = (- 1 / group_num ) * loss / len_oi.unsqueeze(dim = 1)\n",
    "    loss = loss.sum()\n",
    "\n",
    "    return loss\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([2, 10])"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pi_logprob.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "因为response是自己定义的\n",
    "\n",
    "但之前的rewards是基于output_x的，所以需要转换\n",
    "\n",
    "随便设置一个rewards"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[9, 2, 7, 8, 7, 5, 5, 9, 3, 3],\n",
       "        [4, 3, 8, 6, 8, 7, 6, 1, 6, 7]])"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "response"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([100.,  66.])"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len_rewards"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "len_rewards = [100,66]\n",
    "len_rewards = torch.tensor(len_rewards,dtype = torch.float)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[False, False, False, False, False, False, False, False, False, False],\n",
      "        [False, False, False, False, False, False, False, False, False, False]])\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/var/folders/_k/crvl81qd02z3lyvty3mgfwxw0000gn/T/ipykernel_52429/1779594425.py:3: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).\n",
      "  rewards = torch.tensor(rewards)\n"
     ]
    }
   ],
   "source": [
    "pi_logprob = get_logprobs(model, response, attention_mask)\n",
    "pi_old_logprob = get_logprobs(model, response, attention_mask)\n",
    "print(pi_logprob == pi_old_logprob)\n",
    "pi_ref_logprob = get_logprobs(model_ref, response, attention_mask)\n",
    "\n",
    "len_advantage = grpo_advantage(len_rewards)\n",
    "loss = grpo_loss(pi_logprob, pi_old_logprob, pi_ref_logprob, len_advantage, length_x, attention_mask)     # 应该是 [B]（然后才可以 unsqueeze 到 [B, 1]）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(0.0352, grad_fn=<SumBackward0>)"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "ename": "",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m在当前单元格或上一个单元格中执行代码时 Kernel 崩溃。\n",
      "\u001b[1;31m请查看单元格中的代码，以确定故障的可能原因。\n",
      "\u001b[1;31m单击<a href='https://aka.ms/vscodeJupyterKernelCrash'>此处</a>了解详细信息。\n",
      "\u001b[1;31m有关更多详细信息，请查看 Jupyter <a href='command:jupyter.viewOutput'>log</a>。"
     ]
    }
   ],
   "source": [
    "loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## grpo采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "llm",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
